#ifndef MAPPEDRECOGNIZER_H
#define MAPPEDRECOGNIZER_H

#include <map>
#include <vector>
#include <model/HMM.h>

template<class K>
class MappedRecognizer
{
private:
	std::map<K, HMM> models;
public:
	MappedRecognizer();

	void addModel(K key, const HMM &hmm);

	void removeModel(K key);

	HMM& getModel(K key);
	HMM& operator [] (K key);
	unsigned size() const;

	K recognize(const Observation &obs) const;
	K recognize(const Observation &obs, std::vector<double> &probs) const;


};

#endif // MAPPEDRECOGNIZER_H
